1. Field of the Invention
The present invention relates generally to a system and method for altering the order in which boot devices are tried during system initialization. More particularly, the present invention relates to a computer system having a boot order that is adjusted if a hotkey is pressed during the initialization of the system.
2. Background of the Invention
Due to the advent of power management technology and the more recent xe2x80x9cinstant-onxe2x80x9d efforts, there are many ways in which a computer may exist in the xe2x80x9cOFFxe2x80x9d state. Examples include hard off (power is disconnected), soft off (power is supplied only to components which monitor activity external to the system), suspend mode (contents of memory are stored on disk and current state of computer is preserved while power consumption is reduced to a minimum level), and sleep mode (the clock signal is reduced or halted to some or all of the system components during periods of inactivity). The sleep and suspend modes may each be invoked at various levels, depending on the particular implementation of these modes, and recovery from these modes is implementation specific.
Turning a computer xe2x80x9cONxe2x80x9d from the hard-off or the soft-off state causes the computer to begin an initialization process (often referred to as xe2x80x9cboot-upxe2x80x9d). In the initialization process, a system reset signal is asserted and released. After the de-assertion of the reset signal, many of the system peripheral components initialize themselves, retrieve configuration information from dedicated electrically erasable programmable read-only memories (EEPROMs), and enter an initialized state. At the same time, the central processing unit (CPU) resets itself and searches for instructions on how to prepare the system for operation. The initial instructions typically are included in the system""s basic input/output system (system BIOS) which is executable code stored in a nonvolatile memory such as a read-only memory (ROM). The BIOS is built-in software that contains low-level code to control and provide access to the keyboard, display screen, disk drives, serial communications, and a number of miscellaneous functions. The BIOS also specifies a boot-up sequence for the CPU to execute to make the computer ready for operation. The CPU normally begins executing initialization routines from the BIOS ROM, but subsequently copies the BIOS code to main memory from which the BIOS code may thereafter be executed during normal computer operations.
Typically, the first thing that the BIOS instructs the CPU to do in the boot up process is to perform what is called the Power-On Self-Test, or POST for short. The POST is a built-in diagnostic program that checks much of the computer""s hardware to ensure that everything is present and functioning properly before the BIOS begins the actual initialization process. Some additional tests are performed later in the boot process. If any fatal errors are encountered, the boot process stops. After the initial POST, the BIOS instructs the CPU to locate the video system""s built in BIOS program and to execute it to initialize the video system. The CPU then displays the BIOS""s startup screen, and searches for other devices to see if any of them have initialization routines. If any other device initialization routines (e.g. IDE hard drive) are found, they are executed as well.
After the video system has been initialized, the CPU will normally display a prompt similar to xe2x80x9cPress F10 to enter SETUPxe2x80x9d and continue booting up the system. If the user properly responds to the prompt, e.g. by pressing the F10 key within 3 seconds of the appearance of the prompt, the CPU will halt the system boot-up sequence and execute a BIOS setup program where the user is able to view and modify system configuration parameters. After the user exits the BIOS setup program, the computer restarts the boot-up sequence so that any modified configuration parameters may be properly taken into account during system initialization.
The CPU does more tests on the system, including the memory count-up test which may be viewed on the video display. If an error is encountered after the initialization of the video system, a text error message will generally be displayed on the video display. The BIOS boot-up sequence includes a xe2x80x9csystem inventoryxe2x80x9d of sorts, performing more tests to determine what sort of hardware is in the system. Modem BIOSes have many automatic settings and may, among other things, automatically determine memory timing based on what kind of memory it finds installed in the computer. Many BIOSes can also dynamically set hard drive parameters and access modes, and will determine these at roughly this time during the initialization process. The BIOS will also now instruct the CPU to search for and label logical devices (COM and LPT ports). If the BIOS supports the Plug and Play standard, the CPU will detect and configure Plug and Play devices at this time and display a message on the screen for each one it finds. The CPU will often display a summary screen about the system configuration and begin a search for a boot device.
Some modem BIOSes contain a boot table that specifies the order of devices from which the system should try to boot. If a first target device in the list is present and properly configured for booting, the BIOS will boot the system from this device. If the target device that the system tries is not found, the CPU will then try the next device in the boot table, and continue until it finds a bootable device. If no boot device at all can be found, the system will normally display an error message and then freeze up the system.
After having identified a target boot drive, the BIOS instructs the CPU to look for boot information to start the operating system boot process. For example, with a hard disk, the CPU may search for a master boot record at cylinder 0, head 0, sector 1 (the first sector on the disk). If the CPU finds the master boot record, the CPU starts the process of booting the operating system, using the information in the boot sector. At this point, the code indicated by the boot sector takes over from the BIOS code.
The boot devices which may be accessed during the above boot-up sequence include any nonvolatile storage device. Floppy disks, hard disks, magnetic tape, CD-ROMs, Flash ROMs, and network server disks are all examples of devices which can serve as a boot device. To be a boot device, a device should hold a copy of an operating system or application which is to be executed after system initialization. Often the boot device includes a xe2x80x9cboot-sectorxe2x80x9d that informs the CPU of the operating system""s exact storage location. Local devices (i.e. devices included in the computer or directly connected to the computer) may in some systems be preferred over remote devices (i.e. devices that need to be accessed via a network or shared communications link) for booting a computer system, while in other systems remote devices may be preferred.
Many variations exist for the boot-up sequence conducted by the BIOS. As computer hardware has become increasingly reliable, proposals have been made to eliminate POST tests altogether from the normal boot-up sequence. For example, in xe2x80x9cSimple Boot Flag Specification: Version 1.0xe2x80x9d, Microsoft has proposed the use of a register to communicate boot options to the system BIOS. The boot flags are PNPOS, BOOTING, and DIAG. The PNPOS flag is asserted if the operating system normally used by the computer is Plug-and-Play capable. If this is the case, the BIOS does not need to spend time configuring components that the operating system will configure. The DIAG flag is de-asserted if hardware tests are considered unnecessary. In this case, the BIOS can skip the POST. The BOOTING flag, if asserted, indicates that the previous boot attempt did not successfully complete and the BIOS may choose to ignore the other flags and provide a complete system test and configuration sequence.
When a computer is in a soft-off, suspend, or sleep state, it may be configured to awaken if activity is detected, e.g. movement of a mouse or detection of a xe2x80x9cwake upxe2x80x9d data packet by a network interface card. The source of the triggering activity may come from a local mechanism (i.e. a switch or sensor of any kind such as a power switch, a reset switch, a pressable key, a pressure sensor, a mouse, a joystick, a touch pad, a microphone, or a motion sensor), or the trigger source may be remote.
Under certain circumstances, it would be desirable to be able to easily reconfigure the order in which devices are targeted for booting the computer. For example, a system administrator wishing to install a new operating system might prefer to bypass the local drives and boot directly from a network drive. In conventional systems, this would require the following steps by the administrator:
1. Reboot the computer.
2.Enter the BIOS setup program.
3.Find and change the boot order option.
4.Reboot the computer from the network.
5.Login to the network and install the new operating system.
6.Reboot the computer.
7.Enter the BIOS setup program.
8.Find and change to boot order option.
9.Reboot the computer normally.
This procedure is cumbersome and requires a significant amount of the administrator""s time. Since this procedure must be repeated by the administrator for each computer in the network, a more streamlined approach is desirable.
Accordingly, there is provided herein a computer system having a dynamically reconfigurable boot order. In one embodiment, the computer comprises a user input device, a nonvolatile memory, a network interface, a boot trigger, and a CPU. The CPU is coupled to the user input device to detect a predetermined key press, coupled to the boot trigger to detect the to assertion of a system reset signal, and coupled to the nonvolatile memory to retrieve a system BIOS in response to assertion of the system reset signal. The CPU executes the BIOS to initialize the computer system, and as part of the system initialization, the CPU determines a first target boot-up device. Preferably if the predetermined key has been pressed during the system initialization, the CPU alters the default boot order to select the network interface as the first target boot up device. The network interface is configurable to retrieve an operating system from a network device for the CPU to execute. The disclosed embodiment advantageously provides for reduced system installation and maintenance effort, and thereby lead to reduced costs for owners of computer networks.